#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10;
long long A[N];
struct segment_tree{
    long long mi[N<<2];
    long long mtag[N<<2];
    int cnt[N<<2];
    
    void push_down(int now){
        if(mtag[now]){
            mtag[now<<1] += mtag[now];
            mtag[now<<1|1] += mtag[now];
            mi[now<<1] -= mtag[now];
            mi[now<<1|1] -= mtag[now];
            mtag[now] = 0;
        }
    }
    void push_up(int now){
        mi[now] = min(mi[now<<1],mi[now<<1|1]);
        cnt[now] = cnt[now<<1] + cnt[now<<1|1];
    }
    void build(int now,int l,int r){
        if(l == r){
            mi[now] = A[l];
            cnt[now] = 1;
            return;
        }
        int mid = (l + r)/2;
        build(now<<1,l,mid);
        build(now<<1|1,mid+1,r);
        push_up(now);
    }
    long long calc(int now,int l,int r,int x,int y,long long k){
        if(l == r){
            if(mi[now] <= k){
                long long ans = mi[now];
                mi[now] = 0x3f3f3f3f3f3f3f3f;
                cnt[now] = 0;
                return ans;
            }else if(cnt[now]){
                mi[now] -= k;
                return k;
            }else{
                return 0;
            }
        }
        if(x <= l && r <= y){
            push_down(now);
            int mid = (l + r)/2;
            long long res = 0;
            if(mi[now<<1] <= k){
                res += calc(now<<1,l,mid,x,y,k);
            }else{
                mtag[now<<1] += k;
                mi[now<<1] -= k;
                res += cnt[now<<1]*k;
            }
            if(mi[now<<1|1] <= k){
                res += calc(now<<1|1,mid+1,r,x,y,k);
            }else{
                mtag[now<<1|1] += k;
                mi[now<<1|1] -= k;
                res += cnt[now<<1|1]*k;
            }
            push_up(now);
            return res;
        }
        int mid = (l + r)/2;
        push_down(now);
        long long res = 0;
        if(x <= mid){
            res += calc(now<<1,l,mid,x,y,k);
        }
        if(mid < y){
            res += calc(now<<1|1,mid+1,r,x,y,k);
        }
        push_up(now);
        return res;
    }
}sg;
int main(){
    int n;
    cin>>n;
    for(int i = 1;i<=n;i++){
        cin>>A[i];
    }
    int q;
    cin>>q;
    sg.build(1,1,n);
    for(int i = 1;i<=q;i++){
        int l,r,k;
        cin>>l>>r>>k;
        cout<<sg.calc(1,1,n,l,r,k)<<'\n';
    }
}